package com.itheima.d1_arrays;

import java.util.Arrays;
import java.util.function.IntToDoubleFunction;

/**
 * 目标：掌握Arrays类的常用方法。
 */
public class ArraysTest1 {
    public static void main(String[] args) {
        int[] arrs = {1,2,4,3,7,5,8};
        // 1、public static String toString(类型[] arr): 返回数组的内容
        System.out.println(Arrays.toString(arrs));

        // 2、public static 类型[] copyOfRange(类型[] arr, 起始索引, 结束索引) ：拷贝数组（指定范围，包前不包后）
        int[] arrs2 = Arrays.copyOfRange(arrs,3,arrs.length);
        System.out.println(Arrays.toString(arrs2));

        // 3、public static copyOf(类型[] arr, int newLength)：拷贝数组，可以指定新数组的长度。
        int[] arrs3 = Arrays.copyOf(arrs2, 10);
        System.out.println(Arrays.toString(arrs3));

        // 4、public static setAll(double[] array, IntToDoubleFunction generator)：把数组中的原数据改为新数据又存进去。
        double[] prices = {99.8, 128, 100};

/*        Arrays.setAll(prices, new IntToDoubleFunction() {
            @Override
            public double applyAsDouble(int value) {
                return prices[value] * 0.5;
            }
        });*/

        //使用Lambda表达式初步简化函数式接口
/*        Arrays.setAll(prices, (int value) -> {
            return prices[value] * 0.5;
        });*/

        //参数类型可以省略（要省略都省略）
/*        Arrays.setAll(prices, (value) -> {
            return prices[value] * 0.5;
        });*/

        //如果只有一个参数，小括号可以省略
/*        Arrays.setAll(prices, value -> {
            return prices[value] * 0.5;
        }); */

        //如果方法体中只有一行代码，大括号、分号、return关键字可以都省略
        Arrays.setAll(prices, value -> prices[value] * 0.5);

        System.out.println(Arrays.toString(prices));

        // 5、public static void sort(类型[] arr)：对数组进行排序(默认是升序排序)
        Arrays.sort(arrs);
        System.out.println(Arrays.toString(arrs));
    }
}
